Scheduling a pausable automated process in a computer network

ABSTRACT

A device configured to identify automated process instructions for a network device. The automated process instructions include instructions for performing a series of actions on the network device. The device is further configured to identify a first time instance for executing the automated process instructions that does not occur within a time interval associated with a first system update for the network device and to execute the machine-executable code at the first time instance to perform the series of actions on the network device. The device is further configured to detect a second system update for the network device while executing the machine-executable code, to pause the execution of the machine-executable code at a breakpoint at a second time instance after detecting the second system update, and to resume execution of the machine-executable code after the breakpoint at a third time instance after the second system update is complete.

TECHNICAL FIELD

The present disclosure relates generally to process management for acomputer network, and more specifically to scheduling a pausableautomated process in a computer network.

BACKGROUND

In a computer system, network devices are tasked with performingmultiple tasks such as data processing and transferring data to othernetwork devices. Periodically, network devices will perform systemupdates to update the system, network, and/or security settings of thenetwork devices. These system updates cause an interruption thatconsumes the available hardware resources of a network device andcreates a bottleneck that causes other processes on the network deviceto slow down or even fail. In some instances, a system update may forcea system reboot which may also cause processes on the network device toslow down or fail. These issues associated with the overconsumption ofavailable hardware resources degrade the performance and throughput ofthe network device and the computer system.

SUMMARY

The disclosed system provides several practical applications andtechnical advantages that overcome the previously discussed technicalproblems. The following disclosure provides a practical application of aprocess control device for a computer system. The disclosed processcontrol device provides practical applications that improve the resourceutilization of network devices and the computer system by schedulingprocesses (e.g. automated processes) in conjunction with system updatesfor a network device. This process generally involves forecasting orpredicting when a system update may occur on a network device and thenscheduling an automated process on the network device based on when thesystem update is predicted to occur. The disclosed process controldevice provides a technical improvement by scheduling automatedprocesses and system updates to avoid overconsumption of availablehardware resources for a network device. This process allows the processcontrol device to load balance the network devices in the computersystem to provide improved hardware utilization for the network devices.Improving the hardware utilization for a network device allows thenetwork device to perform system updates without negatively affectingother processes that are being performed on the network device. Byimproving the hardware utilization for the network devices in thecomputer system, the process control device is also able to improve theoverall hardware utilization for the computer system. Thus, this processprovides improved load balancing and resource utilization that improvesthe throughput and overall performance of network devices and thecomputer system.

In one embodiment, the computer system comprises a process controldevice that is configured to identify automated process instructions fora network device. The automated process instructions includeinstructions for performing a series of actions on the network device.The instructions include machine-executable code partitioned into aplurality of code segments using breakpoints where each breakpointtemporarily pauses the execution of the machine-executable code betweena pair of code segments. The device is further configured to identify afirst time instance for executing the automated process instructionsthat does not occur within a time interval associated with a systemupdate for the network device and to execute the machine-executable codeat the first time instance to perform the series of actions on thenetwork device.

In another embodiment, the computer system comprises a process controldevice that is configured to identify automated process instructions fora first network device. The automated process instructions includeinstructions for performing a series of actions on the first networkdevice. The device is further configured to identify a first timeinstance for executing the automated process instructions that is beforea time interval associated with a system update for the first networkdevice, to identify a second time instance corresponding with a starttime of the time interval associated with the system update for thefirst network device, and to identify a third time instancecorresponding with an end time of the time interval associated with thesystem update for the first network device. The device is furtherconfigured to execute the machine-executable code at the first timeinstance, to pause the execution of the machine-executable code at abreakpoint at the second time instance, and to resume execution of themachine-executable code after the breakpoint at the third time instanceafter the system update is complete.

In another embodiment, the computer system comprises a process controldevice that is configured to identify automated process instructions fora network device. The automated process instructions includeinstructions for performing a series of actions on the network device.The device is further configured to identify a first time instance forexecuting the automated process instructions that does not occur withina time interval associated with a first system update for the networkdevice and to execute the machine-executable code at the first timeinstance to perform the series of actions on the network device. Thedevice is further configured to detect a second system update for thenetwork device while executing the machine-executable code, to pause theexecution of the machine-executable code at a breakpoint at a secondtime instance after detecting the second system update, and to resumeexecution of the machine-executable code after the breakpoint at a thirdtime instance after the second system update is complete.

Certain embodiments of the present disclosure may include some, all, ornone of these advantages. These advantages and other features will bemore clearly understood from the following detailed description taken inconjunction with the accompanying drawings and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of this disclosure, reference is nowmade to the following brief description, taken in conjunction with theaccompanying drawings and detailed description, wherein like referencenumerals represent like parts.

FIG. 1 is a schematic diagram for a computer system configured to use aprocess control device;

FIG. 2 is a flowchart of an embodiment of a system update scheduleprediction process for the computer system;

FIG. 3 is a flowchart of an embodiment of an automated processscheduling process for the computer system; and

FIG. 4 is an embodiment of a process control device for the computersystem.

DETAILED DESCRIPTION Computer System Overview

FIG. 1 is a schematic diagram of an embodiment of a computer system 100that is generally configured to improve the resource utilization of thecomputer system 100 by scheduling processes (e.g. automated processes)in conjunction with system updates for a network device 102. Thecomputer system 100 is generally configured to employ a process controldevice 104 that forecasts or predicts when a system update may occur ona network device 102 and then schedules an automated process on thenetwork device 102 based on when the system update is predicted tooccur. In some instances, the process control device 104 may schedule anautomated process to be performed before or after a system update ispredicted to occur. In other instances, the process control device 104may co-schedule automated processes with system updates. In this case,the process control device 104 executes an automated process until thetime that a system update is predicted to occur. The process controldevice 104 will then pause the automated process and resume theautomated process once the system update has been completed. In someinstances, the process control device 104 may monitor for unexpectedsystem updates when executing an automated process. In this case, theprocess control device 104 pauses the automated process in response todetecting an unexpected system update and resumes the automated processonce the system update has been completed. The process control device104 provides a technical improvement by scheduling automated processesand system updates to avoid overconsumption of available hardwareresources for a network device 102. This process allows the processcontrol device 104 to load balance the network devices 102 in thecomputer system 100 to provide improved hardware utilization for thenetwork devices 102. Improving the hardware utilization for a networkdevice 102 allows the network device 102 to perform system updateswithout negatively affecting other processes that are being performed onthe network device 102. By improving the hardware utilization for thenetwork devices 102 in the computer system 100, the process controldevice 104 is also able to improve the overall hardware utilization forthe computer system 100.

In one embodiment, the computer system 100 comprises one or more networkdevices 102 and a process control device 104. The network devices 102and the process control device 104 are in signal communication with eachother within a network 106. The network 106 allows communication betweenand amongst the various components of the computer system 100. Thisdisclosure contemplates the network 106 being any suitable networkoperable to facilitate communication between the components of thecomputer system 100. The network 106 may include any interconnectingsystem capable of transmitting audio, video, signals, data, messages, orany combination of the preceding. The network 106 may include all or aportion of a local area network (LAN), a wide area network (WAN), anoverlay network, a software-defined network (SDN), a virtual privatenetwork (VPN), a packet data network (e.g., the Internet), a mobiletelephone network (e.g., cellular networks, such as 4G or 5G), a PlainOld Telephone (POT) network, a wireless data network (e.g., WiFi, WiGig,WiMax, etc.), a Long Term Evolution (LTE) network, a Universal MobileTelecommunications System (UMTS) network, a peer-to-peer (P2P) network,a Bluetooth network, a Near Field Communication (NFC) network, a Zigbeenetwork, and/or any other suitable network.

Network Devices

A network device 102 is a hardware device that is generally configuredto provide hardware and software resources to a user. Examples of anetwork device 102 include, but are not limited to, a laptop, acomputer, a smartphone, a tablet, a smart device, or any other suitabletype of device. The network device 102 may comprise a graphical userinterface (e.g. a display), a touchscreen, a touchpad, keys, buttons, amouse, or any other suitable type of hardware that allows a user to viewdata and/or to provide inputs into the network device 102. Periodically,a network device 102 is configured to perform a system update thatmodifies one or more settings on the network device 102. Examples of asystem update include, but are not limited to, an application update, anoperating system update, a software update, a firmware update, a networkconfiguration update, a security update or patch, or any other suitabletype of update.

Process Control Device

Examples of a process control device 104 include, but are not limitedto, a server, an access point, a computer, or any other suitable type ofnetwork device. In one embodiment, a process control device 104comprises a process control engine 108 and a memory 110. Additionaldetails about the hardware configuration of the process control device104 are described in FIG. 4 . The memory 110 is configured to storepredicted system update schedules 112, automated process instructions114, metadata 116, key values 126, and/or any other suitable type ofdata.

In one embodiment, the process control engine 108 is generallyconfigured to generate a predicted system update schedule 112 for anetwork device 102 based on metadata 116 that is associated withprevious system updates for the network device 102. An example of theprocess control engine 108 performing this operation is described inmore detail in FIG. 2 . The predicted system update schedule 112comprises information associated with system updates that are forecastedor predicted to be performed on a network device 102. For example, apredicted system update schedule 112 may comprise device identifiers120, system update identifiers 122, and time values 124. The deviceidentifier 120 uniquely identifies a network device 102. Examples ofdevice identifiers 120 include, but are not limited to, a Media AccessControl (MAC) address, an Internet Protocol (IP) address, analphanumeric identifier or code, or any other suitable type ofidentifier that can be used to identify a network device 102 within thecomputer system 100. The system update identifier 122 identifies asystem update or a type of system update that will be performed on anetwork device 102. The system update identifier 122 may be a name, analphanumeric code, or any other suitable type of identifier. The timevalue 124 identifies a time interval when a system update is forecastedto be performed on a network device 102. For example, the time value 124may comprise a first timestamp (e.g. a day and/or time) for when asystem update is predicted to start. The time value 124 may furthercomprise a second timestamp for when the system update is expected to becompleted. The process control engine 108 is configured to use the timevalue 124 for scheduling automated processes on a network device 102. Inother examples, a predicted system update schedule 112 may comprise anyother suitable type or combination of information that is associatedwith a network device 102 and/or a system update.

The process control engine 108 is further configured to scheduleautomated processes on a network device 102. An automated processgenerally comprises a series of actions that are to be performed on orby a network device 102. In one embodiment. the process control engine108 is configured to schedule automated processes around any predictedsystem updates. In this case, the process control engine 108 identifiesa time to perform an automated process such that the automated processcan be performed without being interrupted by a system update. Inanother embodiment, the process control engine 108 is configured toco-schedule an automated process with a system update. In this case, theprocess control engine 108 schedules the automated process such that theautomated process can be temporarily paused to allow a forecasted systemupdate to be completed. After the system update has been completed, theprocess control engine 108 then resumes the automated process so that itcan also be completed. In another embodiment, the process control engine108 is configured to detect when an unexpected system update has begunafter initiating an automated process. In this case, the process controlengine 108 pauses the automated process in response to detecting thesystem update. After the system update has been completed, the processcontrol engine 108 then resumes the automated process. Examples of theprocess control engine 108 performing these operations are described inmore detail in FIG. 3 .

The automated process instructions 114 generally comprisesmachine-executable code for performing a series of actions on a networkdevice 102. Examples of the machine-executable code include, but are notlimited to, scripts, source code, macro, executable files, or any othersuitable type of code that can be executed on a network device 102. Inone embodiment, the machine-executable code is partitioned into aplurality of code segments using breakpoints. Each breakpointcorresponds with a logical breakpoint between two code segments. Abreakpoint may also correspond with a location in the code where theexecution of the code can be temporarily paused to allow otheroperations (e.g. a system update) to be performed. In this case, thecode will resume execution at the code segment that immediately followsthe breakpoint.

System update schedule prediction process

FIG. 2 is a flowchart of an embodiment of system update scheduleprediction process 200. The computer system 100 may employ process 200to generate a predicted system update schedule 112 for a network device102 based on metadata 116 that is captured from the network device 102.

At operation 202, the process control device 104 obtains metadata 116for a network device 102. In some embodiments, the process controldevice 104 may be configured to periodically receive metadata 116 forthe network device 102. For example, the process control device 104 mayreceive metadata 116 from the network device 102 daily, weekly, monthly,or at any other suitable time interval. In other embodiments, theprocess control device 104 may be configured to receive metadata 116 forthe network device 102 in response to a request for the metadata 116.The metadata 116 generally comprises information about any activities oroperations that are performed on the network device 102. The metadata116 may comprise timestamps that are associated with one or more systemupdates that were previously performed on the network device 102, anexecution time that is associated with one or more system updates, logfiles, or any other suitable type of metadata that is associated withthe network device 102 and/or system updates that were performed on thenetwork device 102. In some embodiments, the process control device 104may be configured to determine the execution time using a screen capturerecording (e.g. a video capture recording) of the operations executingon the network device 102. For example, the metadata 116 may comprise ascreen capture recording of a system update being performed on thenetwork device 102. In this example, the process control device 104 mayidentify a first timestamp that corresponds with when a system updatebegins and a second timestamp that corresponds with when the systemupdate has completed. The process control device 104 may then usetimestamps to determine an execution time for the system update based ona difference between the timestamps. In other examples, the processcontrol device 104 may determine an execution time using log files orany other suitable technique.

At operation 204, the process control device 104 generates a key value126 for the metadata 116. The key value 126 is a value that is uniquelyassociated with the data content of the metadata 116. As an example, theprocess control device 104 may determine the key value 126 by performinga hashing operation on the metadata 116 to generate a hash value. Inthis example, the generated hash value is uniquely associated with thecontent of the metadata 116. By generating a key value 126, the processcontrol device 104 can determine whether there is any similar metadata116 that is associated with other network devices 102. In this case, thedifference between two key values 126 (e.g. hash values) indicates alevel of similarity between the metadata 116 that is associated with thekey value 126. Key values 126 with similar values are associated withmore similar metadata 116 to each other than key values 126 that aremore different. The process control device 104 uses this property of keyvalues 126 to quickly identify metadata 116 from other network devices102 that is similar to the metadata 116 from the network device 102without having to compare the individual elements of the metadata 116 toeach other.

At operation 206, the process control device 104 determines whetherthere is another key value 126 within a predetermined threshold value ofthe key value 126 pf the metadata 116 for the network device 102. Here,the process control device 104 determines a difference between the keyvalue 126 that was determined in operation 204 to the key values 126 inmemory 110 that are associated with the metadata 116 from other networkdevices 102. The process control device 104 then determines whether anyof the differences between the key value 126 of the network device 102and the key values 126 of the other network devices 102 is less than orequal to a predetermined threshold value. The predetermined thresholdvalue may be any user-defined value that corresponds with a level ofsimilarity between metadata 116 from different network devices 102 basedon their key values 126.

The process control device 104 proceeds to operation 208 in response todetermining that there is a key value 126 within the predeterminedthreshold of the key value 126. In this case, the process control device104 determines that the metadata 116 that is associated with anothernetwork device 102 is similar to the metadata 116 for the network device102. This means that the metadata 116 that is associated with anothernetwork device 102 may be used to supplement the metadata 116 that isavailable for the network device 102 when generating a predicted systemupdate schedule 112 for the network device 102. At operation 208, theprocess control device 104 identifies metadata 116 associated with anidentified key value 126. In one embodiment, the process control device104 may recover or retrieve the metadata 116 that is associated with anidentified key value 126 by performing a hashing operation on theidentified key value 126. In this example, the process of applying thehashing operation to the key value 126 converts the key value 126 backinto its original metadata 116 format. In other examples, the processcontrol device 104 may store associations between key values 126 andtheir corresponding metadata 116. In this case, the process controldevice 104 may use the key value 126 as a search token to identify thestored metadata 116 that is mapped to the key value 126. In otherexamples, the process control device 104 may use any other suitable typeof process to recover or identify the metadata 116 that is associatedwith an identified key value 126.

Returning to operation 206, the process control device 104 proceeds tooperation 210 in response to determining that the key value 126 is notwithin the predetermined threshold value of any other key values 126. Inthis case, the process control device 104 determines that there is nosimilar metadata 116 available from other network devices 102 that canbe used to supplement the metadata 116 for the network device 102.

At operation 210, the process control device 104 generates a predictedsystem update schedule 112 for the network device 102 based on themetadata 116 that was obtained in operation 202 and/or operation 208. Asan example, the metadata 116 may comprise timestamps that are associatedwith one or more system updates that were previously performed on thenetwork device 102. The metadata 116 may also identify a system updateand indicate how long the system update took to complete. In thisexample, the process control device 104 uses the timestamps to predictwhen another system update is likely to occur. For instance, the processcontrol device 104 may determine a time period between system updatesthat were performed on the network device 102. The process controldevice 104 may then identify a time value 124 that corresponds with afuture time interval for when another system update may occur based onthe timestamps and the time periods between the system updates. Theprocess control device 104 then generates a predicted system updateschedule 112 for the network device 102 by storing an associationbetween a device identifier 120 for the network device 102, a systemupdate identifier 122 for a system update, and the determined time value124 that corresponds with a future time interval for when another systemupdate may occur.

As another example, the metadata 116 may comprise an execution time thatis associated with one or more system updates. In this example, theprocess control device 104 may determine a time interval based on theexecution time that is associated with one or more system updates. Forinstance, the process control device 104 may determine an averageexecution time for the system updates and use the average execution timeas the time interval for a predicted system update. In this case, theprocess control device 104 may identify a time value 124 thatcorresponds with a predicted starting timestamp and a predicted endingtimestamp for the determined time interval. The process control device104 then generates a predicted system update schedule 112 for thenetwork device 102 by storing an association between a device identifier120 for the network device 102, a system update identifier 122 for asystem update, and the determined time value 124 that corresponds with afuture time interval for when another system update may occur.

In some instances, the process control device 104 may generate multiplepredicted system update schedules 112 that correspond with differenttypes of system updates that may be performed on the network device 102.In this case, the process control device 104 uses a similar processusing metadata 116 that is associated with each type of system update togenerate each of the predicted system update schedules 112.

At operation 212, the process control device 104 stores the predictedsystem update schedule 112 in memory 110. Here, the process controldevice 104 stores an association between an identifier for the networkdevice 102 and the predicted system update schedule 112 in memory 110.Once the association is stored in memory 110, the process control device104 can use the predicted system update schedule 112 the network device102 when scheduling automated processes for the network device 102. Anexample of this process is described in FIG. 3 . After generating andstoring a predicted system update schedule 112 for a network device 102,the process control device 104 may repeat process 200 to generate apredicted system update schedule 112 for other network devices 102 inthe computer system 100.

Automated process scheduling process

FIG. 3 is a flowchart of an embodiment of an automated processscheduling process 300. After generating a predicted system updateschedule 112 for the network device 102, the computer system 100 mayemploy process 300 to schedule operations, such as automated processes,on the network device 102 around any predicted system updates. Thisprocess allows the computer system 100 to provide improved hardwareresource management and utilization to reduce the number of tasks thatare performed simultaneously on the network device 102 and therebyreduce the burden on the network device 102.

At operation 302, the process control device 104 identifies a predictedsystem update schedule 112 for the network device 102. In oneembodiment, the process control device 104 is configured to periodicallyexecute an automated process on a network device 102. The processcontrol device 104 begins by first identifying automated processinstructions 114 for the network device 102. The automated processinstructions 114 comprise instructions for performing a series ofactions on the network device 102. To schedule the automated process,the process control device 104 then identifies a predicted system updateschedule 112 that is associated with the network device 102. Forexample, the process control device 104 may use a device identifier 120for the network device 102 to identify a predicted system updateschedule 112 from memory 110.

At operation 304, the process control device 104 determines whetherthere are any predicted system updates for the network device 102 basedon the predicted system update schedule 112 for the network device 102.Here, the process control device 104 determines whether there are anypredicted system updates for the network device 102 within apredetermined time period. For example, the process control device 104may use the time value 124 or timestamps in the predicted system updateschedule 112 to determine whether a system update is predicted to occurwithin a one-hour time period, a two-hour time period, a four-hour timeperiod, a twelve-hour time period, a twenty four-hour period, or anyother suitable time period. The process control device 104 proceeds tooperation 306 in response to determining that there is a predictedsystem update for the network device 102 within the predetermined timeperiod. In this case, the process control device 104 determines when toschedule the automated process based on the predicted system update.

At operation 306, the process control device 104 determines whether toco-schedule the automated process with the system update. Co-schedulingthe automated process with the system update allows the process controldevice 104 to begin executing the automated process right away with theflexibility to temporarily pause the automated process while the systemupdate is being performed. In some instances, the process control device104 may be configured to schedule automated processes either before orafter any predicted system updates. In this case, the process controldevice 104 will determine not to co-schedule the automated process withthe system update.

The process control device 104 proceeds to operation 308 in response todetermining to not co-schedule the automated process with the systemupdate. At operation 308, the process control device 104 executes theautomated process. As an example, the process control device 104 mayidentify a time interval when the system update is predicted to executeand then schedule the automated process to be completed before the timeinterval for the predicted system update. As another example, theprocess control device 104 may identify the time interval when thesystem update is predicted to execute and then schedule the automatedprocess for a time after the time interval for the system update. Theprocess control device 104 may execute the automated process byexecuting scripts, source code, macro, executable files, or any othersuitable type of machine-executable code to perform a series of actionson the network device 102. In some embodiments, the process controldevice 104 may first establish a network connection with the networkdevice 102 when it is time to execute the automated process. Thisprocess allows the process control device 104 to connect to the networkdevice 102 while executing the automated process and the disconnect fromthe network device 102 when the automated process is complete.

Returning to operation 306, the process control device 104 proceeds tooperation 310 in response to determining to co-schedule the automatedprocess with the system update. In this case, the process control device104 will schedule the automated process to begin executing at a timebefore the start time of the system update. Once the system updateoccurs, the process control device 104 will temporarily pause theautomated process at a second time and resume the automated process at athird time when the system update has been completed.

At operation 310, the process control device 104 selects a portion ofthe automated process to execute. In one embodiment, the automatedprocess is implemented using machine-executable code that is partitionedinto a plurality of code segments using breakpoints. Each breakpointcorresponds with a logical breakpoint between two code segments. Abreakpoint may also correspond with a location in the code where theexecution of the code can be temporarily paused to allow otheroperations (e.g. a system update) to be performed. The process controldevice 104 begins by selecting a first code segment in themachine-executable code that will be executed. In subsequent iterations,the process control device 104 then selects the next code segment in themachine-executable code to execute.

At operation 312, the process control device 104 executes the selectedportion of the automated process. The process control device 104 beginsexecuting the automated process by executing the selected code segmentto perform one or more actions on the network device 102. In the firstiteration, the process control device 104 executes the selected codesegment at a time before the system update begins. In some embodiments,the process control device 104 may first establish a network connectionwith the network device 102 when it is time to execute the automatedprocess.

At operation 314, the process control device 104 determines whether toexecute the system update. After executing the code segment, the processcontrol device 104 compares the current time to the start time of thesystem update. The process control device 104 determines to execute thesystem update when the current time is past the start time of the systemupdate or within a predetermined time period of the start time of thesystem update. The process control device 104 proceeds to operation 316in response to determining to execute the system update. In this case,the process control device 104 will pause the automated process to allowthe system update to execute on the network device 102.

At operation 316, the process control device 104 pauses the automatedprocess. After executing a code segment, the process control device 104can temporarily pause the execution of the automated process at thebreakpoint that terminates the code segment. By pausing the automatedprocess at the breakpoint, the process control device 104 can laterresume the automated process by executing the next code segment afterthe breakpoint. This process allows the process control device 104 tosafely stop the automated process at a point where the automated processcan be resumed at a later time after the system update is complete. Insome embodiments, the process control device 104 may temporarily storeany data that is associated with the automated process in memory 110after pausing the execution of the automated process. This processallows the process control device 104 to securely store any data that isassociated with the automated process while the system update is beingperformed. After the system update is completed, the process controldevice 104 may retrieve the stored data from the memory 110 to continueperforming the automated process.

At operation 318, the process control device 104 allows the systemupdate to execute. After pausing the automated process, the processcontrol device 104 may grant permission or allow the system update to beperformed on the network device 102. The process control device 104 maymonitor log files or task managers for the network device 102 todetermine when the system update has been completed. After the systemupdate has been completed, the process control device 104 may resumeexecuting the automated process on the network device 102.

At operation 320, the process control device 104 determines whether theautomated process is complete. Here, the process control device 104determines whether there are any remaining code segments in theautomated process that need to be executed. The process control device104 determines that the automated process has not been completed inresponse to determining that one or more code segments have not beenexecuted. The process control device 104 returns to operation 310 inresponse to determining that the automated process is not complete. Inthis case, the process control device 104 returns to operation 310 toidentify the next code segment to execute for the automated process.Otherwise, the process control device 104 terminates process 300 inresponse to determining that the automated process is complete. In thiscase, the process control device 104 determines that the automatedprocess has been completed and no further actions are necessary. In someembodiments, the process control device 104 may disconnect any networkconnections that were established to execute the automated process.

Returning to operation 304, the process control device 104 proceeds tooperation 322 in response to determining there are no scheduled systemupdates. In this case, the process control device 104 will beginexecuting the automated process while monitoring the network device 102for any expected system updates that may occur while executing theautomated process. At operation 322, the process control device 104selects a portion of the automated process to execute. The processcontrol device 104 begins by selecting a first code segment in themachine-executable code that will be executed. In subsequent iterations,the process control device 104 then selects the next code segment in themachine-executable code to execute.

At operation 324, the process control device 104 executes the selectedportion of the automated process. The process control device 104 beginsexecuting the automated process by executing the selected code segmentto perform one or more actions on the network device 102. In the firstiteration, the process control device 104 executes the selected codesegment before the system update begins. In some embodiments, theprocess control device 104 may first establish a network connection withthe network device 102 when it is time to execute the automated process.

At operation 326, the process control device 104 determines whether asystem update has been detected. In some embodiments, the processcontrol device 104 may monitor log files or task managers for thenetwork device 102 to determine whether a system update has beendetected. For example, the process control device 104 may monitor a taskmanager on the network device 102 to look for processes or programs thatare executing on the network device 102 that correspond with a systemupdate.

In some embodiments, the process control device 104 may detect a systemupdate using expected execution times for each code segment. In thiscase, each code segment is associated with an expected execution timefor how long it takes for the code segment to be executed. When a systemupdate is running in the background on the network device 102, theamount of time it takes to execute the code segment will increase. Inthis example, the process control device 104 monitors the execution timefor each code segment while it is being executed. When the executiontime exceeds a predetermined time threshold value from the expectedexecution time, the process control device 104 will determine that asystem update is being performed on the network device 102. In otherembodiments, the process control device 104 may monitor for pop-upnotifications that are associated with system updates or use any othersuitable technique for detecting a system update on the network device102.

The process control device 104 proceeds to operation 328 in response todetermining that a system update has been detected. In this case, theprocess control device 104 will pause the automated process to allow thesystem update to execute on the network device 102. At operation 328,the process control device 104 pauses the automated process. In responseto detecting the system update, the process control device 104 cantemporarily pause the execution of the automated process at thebreakpoint that terminates the code segment. By pausing the automatedprocess at the breakpoint, the process control device 104 can laterresume the automated process by executing the next code segment afterthe breakpoint. This process allows the process control device 104 tosafely stop the automated process at a point where the automated processcan be resumed at a later time after the system update is complete. Insome embodiments, the process control device 104 may temporarily storeany data that is associated with the automated process in memory 110after pausing the execution of the automated process.

At operation 330, the process control device 104 allows the systemupdate to execute. After pausing the automated process, the processcontrol device 104 may grant permission or allow the system update to beperformed on the network device 102. The process control device 104 maymonitor log files or task managers for the network device 102 todetermine when the system update has been completed. After the systemupdate has been completed, the process control device 104 may resumeexecuting the automated process on the network device 102.

At operation 332, the process control device 104 determines whether theautomated process is complete. Here, the process control device 104determines whether there are any remaining code segments in theautomated process that need to be executed. The process control device104 determines that the automated process has not been completed inresponse to determining that one or more code segments have not beenexecuted. The process control device 104 returns to operation 322 inresponse to determining that the automated process is not complete. Inthis case, the process control device 104 returns to operation 310 toidentify the next code segment to execute for the automated process.Otherwise, the process control device 104 terminates process 300 inresponse to determining that the automated process is complete. In thiscase, the process control device 104 determines that the automatedprocess has been completed and no further actions are necessary. In someembodiments, the process control device 104 may disconnect any networkconnections that were established to execute the automated process.

Hardware configuration for the process control device

FIG. 4 is an embodiment of a process control device 104 for the computersystem 100. As an example, the process control device 104 may be aserver or a computer. The process control device 104 comprises aprocessor 402, a memory 110, and a network interface 404. The processcontrol device 104 may be configured as shown or in any other suitableconfiguration.

Processor

The processor 402 is a hardware device that comprises one or moreprocessors operably coupled to the memory 110. The processor 402 is anyelectronic circuitry including, but not limited to, state machines, oneor more central processing unit (CPU) chips, logic units, cores (e.g. amulti-core processor), field-programmable gate array (FPGAs),application-specific integrated circuits (ASICs), or digital signalprocessors (DSPs). The processor 402 may be a programmable logic device,a microcontroller, a microprocessor, or any suitable combination of thepreceding. The processor 402 is communicatively coupled to and in signalcommunication with the memory 110 and the network interface 404. The oneor more processors are configured to process data and may be implementedin hardware or software. For example, the processor 402 may be 8-bit,16-bit, 32-bit, 64-bit, or of any other suitable architecture. Theprocessor 402 may include an arithmetic logic unit (ALU) for performingarithmetic and logic operations, processor registers that supplyoperands to the ALU and store the results of ALU operations, and acontrol unit that fetches instructions from memory and executes them bydirecting the coordinated operations of the ALU, registers and othercomponents.

The one or more processors are configured to implement variousinstructions. For example, the one or more processors are configured toexecute process control instructions 406 to implement the processcontrol engine 108. In this way, processor 402 may be a special-purposecomputer designed to implement the functions disclosed herein. In anembodiment, the process control engine 108 is implemented using logicunits, FPGAs, ASICs, DSPs, or any other suitable hardware. The processcontrol engine 108 is configured to operate as described in FIGS. 1-3 .For example, the process control engine 108 may be configured to performthe operations of processes 200 and 300 as described in FIGS. 2 and 3 ,respectively.

Memory

The memory 110 is a hardware device that is operable to store any of theinformation described above with respect to FIGS. 1-3 along with anyother data, instructions, logic, rules, or code operable to implementthe function(s) described herein when executed by the processor 402. Thememory 110 comprises one or more disks, tape drives, or solid-statedrives, and may be used as an over-flow data storage device, to storeprograms when such programs are selected for execution, and to storeinstructions and data that are read during program execution. The memory110 may be volatile or non-volatile and may comprise a read-only memory(ROM), random-access memory (RAM), ternary content-addressable memory(TCAM), dynamic random-access memory (DRAM), and static random-accessmemory (SRAM).

The memory 110 is operable to store process control instructions 406,predicted system update schedules 112, automated process instructions114, metadata 116, key values 126, and/or any other data orinstructions. The process control instructions 406 may comprise anysuitable set of instructions, logic, rules, or code operable to executethe process control engine 108. The predicted system update schedules112, the automated process instructions 114, the metadata 116, and thekey values 126 are configured similar to the predicted system updateschedule 112, automated process instructions 114, metadata 116, and keyvalues 126 described in FIGS. 1-3 , respectively.

Network Interface

The network interface 404 is a hardware device that is configured toenable wired and/or wireless communications. The network interface 404is configured to communicate data between network devices 102 and otherdevices, systems, or domains. For example, the network interface 404 maycomprise an NFC interface, a Bluetooth interface, a Zigbee interface, aZ-wave interface, a radio-frequency identification (RFID) interface, aWIFI interface, a LAN interface, a WAN interface, a PAN interface, amodem, a switch, or a router. The processor 402 is configured to sendand receive data using the network interface 404. The network interface404 may be configured to use any suitable type of communication protocolas would be appreciated by one of ordinary skill in the art.

While several embodiments have been provided in the present disclosure,it should be understood that the disclosed systems and methods might beembodied in many other specific forms without departing from the spiritor scope of the present disclosure. The present examples are to beconsidered as illustrative and not restrictive, and the intention is notto be limited to the details given herein. For example, the variouselements or components may be combined or integrated with another systemor certain features may be omitted, or not implemented.

In addition, techniques, systems, subsystems, and methods described andillustrated in the various embodiments as discrete or separate may becombined or integrated with other systems, modules, techniques, ormethods without departing from the scope of the present disclosure.Other items shown or discussed as coupled or directly coupled orcommunicating with each other may be indirectly coupled or communicatingthrough some interface, device, or intermediate component whetherelectrically, mechanically, or otherwise. Other examples of changes,substitutions, and alterations are ascertainable by one skilled in theart and could be made without departing from the spirit and scopedisclosed herein.

To aid the Patent Office, and any readers of any patent issued on thisapplication in interpreting the claims appended hereto, applicants notethat they do not intend any of the appended claims to invoke 35 U.S.C. §112(f) as it exists on the date of filing hereof unless the words “meansfor” or “step for” are explicitly used in the particular claim.

1. A process control device, comprising: a memory operable to store apredicted system update schedule identifying a time interval for a firstsystem update for a network device, wherein the first system update isconfigured to modify one or more settings on the network device; and aprocessor operably coupled to the memory, configured to: identifyautomated process instructions for the network device, wherein: theautomated process instructions comprise instructions for performing aseries of actions on the network device, wherein the instructionscomprise: machine-executable code partitioned into a plurality of codesegments using breakpoints, wherein each breakpoint temporarily pausesthe execution of the machine-executable code between a pair of codesegments; identify a first time instance for executing the automatedprocess instructions that does not occur within the time intervalassociated with the first system update for the network device; executethe machine-executable code at the first time instance to perform theseries of actions on the network device; detect a second system updatefor the network device while executing the machine-executable code;pause the execution of the machine-executable code at a breakpoint at asecond time instance after detecting the second system update; andresume execution of the machine-executable code after the breakpoint ata third time instance after the second system update is complete.
 2. Thedevice of claim 1, wherein the processor is further configured to:receive metadata associated with the network device, wherein themetadata comprises timestamps associated with one or more system updatesthat were previously performed on the network device; and determine thetime interval for the system update based at least in part on thetimestamps associated with one or more system updates that werepreviously performed on the network device.
 3. The device of claim 1,wherein the processor is further configured to: receive metadataassociated with the network device, wherein the metadata comprises anexecution time associated with one or more system updates; and determinethe time interval for the system update based at least in part on theexecution time associated with the one or more system updates.
 4. Thedevice of claim 1, wherein the processor is further configured to:receive a screen capture recording of one or more system updates beingperformed on the network device; determine an execution time associatedwith the one or more system updates based on the screen capturerecording; and determine the time interval for the system update basedat least in part on the execution time associated with the one or moresystem updates.
 5. The device of claim 1, wherein detecting the secondsystem update comprises determining an execution time associated with acode segment exceeds a predetermined time threshold value whileexecuting the code segment.
 6. The device of claim 1, wherein detectingthe second system update comprises detecting a program executing on thenetwork device, wherein the program is associated with the second systemupdate.
 7. The device of claim 1, wherein executing themachine-executable code comprises establishing a network connection withthe network device.
 8. An automated process scheduling method,comprising: identifying automated process instructions for a networkdevice, wherein: the automated process instructions compriseinstructions for performing a series of actions on the network device,wherein the instructions comprise: machine-executable code partitionedinto a plurality of code segments using breakpoints, wherein eachbreakpoint temporarily pauses the execution of the machine-executablecode between a pair of code segments; identifying a first time instancefor executing the automated process instructions that does not occurwithin a time interval associated with a first system update for thenetwork device; executing the machine-executable code at the first timeinstance to perform the series of actions on the network device;detecting a second system update for the network device while executingthe machine-executable code, wherein the second system update isconfigured to modify one or more settings on the network device; pausingthe execution of the machine-executable code at a breakpoint at a secondtime instance after detecting the second system update; and resumingexecution of the machine-executable code after the breakpoint at a thirdtime instance after the second system update is complete.
 9. The methodof claim 8, further comprising: receiving metadata associated with thenetwork device, wherein the metadata comprises timestamps associatedwith one or more system updates that were previously performed on thenetwork device; and determining the time interval for the system updatebased at least in part on the timestamps associated with one or moresystem updates that were previously performed on the network device. 10.The method of claim 8, further comprising: receiving metadata associatedwith the network device, wherein the metadata comprises an executiontime associated with one or more system updates; and determining thetime interval for the system update based at least in part on theexecution time associated with the one or more system updates.
 11. Themethod of claim 8, further comprising: receiving a screen capturerecording of one or more system updates being performed on the networkdevice; determining an execution time associated with the one or moresystem updates based on the screen capture recording; and determiningthe time interval for the system update based at least in part on theexecution time associated with the one or more system updates.
 12. Themethod of claim 8, wherein detecting the second system update comprisesdetermining an execution time associated with a code segment exceeds apredetermined time threshold value while executing the code segment. 13.The method of claim 8, wherein detecting the second system updatecomprises detecting a program executing on the network device, whereinthe program is associated with the second system update.
 14. The methodof claim 8, wherein executing the machine-executable code comprisesestablishing a network connection with the network device.
 15. Acomputer program product comprising executable instructions stored in anon-transitory computer-readable medium that when executed by aprocessor causes the processor to: identify automated processinstructions for a network device, wherein: the automated processinstructions comprise instructions for performing a series of actions onthe network device, wherein the instructions comprise:machine-executable code partitioned into a plurality of code segmentsusing breakpoints, wherein each breakpoint temporarily pauses theexecution of the machine-executable code between a pair of codesegments; identify a first time instance for executing the automatedprocess instructions that does not occur within a time intervalassociated with a first system update for the network device; executethe machine-executable code at the first time instance to perform theseries of actions on the network device; detect a second system updatefor the network device while executing the machine-executable code,wherein the second system update is configured to modify one or moresettings on the network device; pause the execution of themachine-executable code at a breakpoint at a second time instance afterdetecting the second system update; and resume execution of themachine-executable code after the breakpoint at a third time instanceafter the second system update is complete.
 16. The computer programproduct of claim 15, further comprising instructions that when executedby the processor causes the processor to: receive metadata associatedwith the network device, wherein the metadata comprises timestampsassociated with one or more system updates that were previouslyperformed on the network device; and determine the time interval for thesystem update based at least in part on the timestamps associated withone or more system updates that were previously performed on the networkdevice.
 17. The computer program product of claim 15, further comprisinginstructions that when executed by the processor causes the processorto: receive metadata associated with the network device, wherein themetadata comprises an execution time associated with one or more systemupdates; and determine the time interval for the system update based atleast in part on the execution time associated with the one or moresystem updates.
 18. The computer program product of claim 15, furthercomprising instructions that when executed by the processor causes theprocessor to: receive a screen capture recording of one or more systemupdates being performed on the network device; determine an executiontime associated with the one or more system updates based on the screencapture recording; and determine the time interval for the system updatebased at least in part on the execution time associated with the one ormore system updates.
 19. The computer program product of claim 15,wherein detecting the second system update comprises determining anexecution time associated with a code segment exceeds a predeterminedtime threshold value while executing the code segment.
 20. The computerprogram product of claim 15, wherein detecting the second system updatecomprises detecting a program executing on the network device, whereinthe program is associated with the second system update.